#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
using namespace std;
#include <vector>
class Solution {
public:
    int hash1[26];
    int hash2[26];
    vector<int> ret;
    bool check()
    {
        for (int i = 0; i < 26; i++)
        {
            if (hash1[i] != hash2[i])
                return false;
        }
        return true;
    }
    vector<int> findAnagrams(string s, string p) {
        if (s.size() < p.size())
            return ret;
        int left = 0;
        int right = 0;
        for (int i = 0; i < p.size(); i++)
        {
            hash2[p[i] - 'a']++;
        }

        while (right - left + 1 < p.size())
        {
            hash1[s[right++] - 'a']++;
            continue;
        }
        hash1[s[right] - 'a']++;

        for (; right < s.size() - 1;)
        {

            if (check())
                ret.push_back(left);
            hash1[s[left++] - 'a']--;
            hash1[s[++right] - 'a']++;
        }
        return ret;
    }
};
//class Solution {
//public:
//    vector<int> ret;
//    vector<int> findAnagrams(string s, string p) {
//        int count = 0;
//        for (int i = 0; i < s.size() - p.size(); i++)
//        {
//            count = 0;
//            for (int j = 0; j < p.size(); j++)
//            {
//                for (int k = 0; k < p.size(); k++)
//                {
//                    if (s[i + k] == p[j])
//                    {
//                        count++;
//                        break;
//                    }
//                }
//            }
//            if (count == 3)
//                ret.push_back(i);
//        }
//        return ret;
//    }
//};
int main()
{
    string s2 = "abab";
    string s1 = "ab";
    Solution s;
    s.findAnagrams(s2, s1);
    return 0;
}
//#include <stdio.h>
//int main()
//{
//	int ch;
//	int count1 = 0, count2 = 0, count3 = 0, count4 = 0;
//	while ((ch=getchar()) != EOF)
//	{
//		if ((ch >= 'A' && ch <= 'Z') || (ch >= 'a' && ch <= 'z'))
//			count1++;
//		else if (ch >= '0' && ch <= '9')
//			count2++;
//		else if (ch == ' ')
//			count3++;
//		else if (ch == '\n')
//			break;
//		else
//			count4++;
//	}
//	printf("%d %d %d %d", count1, count2, count3, count4);
//	return 0;
//}